#ifndef _WDS_LIFEOBJECT_H_
#define _WDS_LIFEOBJECT_H_

#include "ui/ui_sprite.h"
#include "math/facing.h"
#include "math/movement.h"

class WDSBullet;

class WDSLifeObject 
{
public:
	WDSLifeObject();

	virtual void						Render(const math::Vec2& Offset,float Scale);	
	virtual void						Tick(float dt);
	virtual void						OnDie(){};
	virtual void						ReSpawn();
	virtual bool						IsReadyToSpawn() const { return !IsAlive(); };
	virtual void						GotDamaged(float Amount,WDSBullet* pBullet, bool Force);

	bool								IsAlive() const { return m_IsAlive; };	
	void								ForceKill(){};	
	bool								IsInsideScreen() const;	
	const math::Vec2&					GetPos()const { return m_Movement.GetPos(); };

protected:

	

	math::Facing						m_Facing;
	math::Movement						m_Movement;
	bool								m_IsAlive;
	ui::UISprite						m_Sprite;
	float								m_Life;
	float								m_MaxLife;

};

#endif